﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;

/// <summary>
/// Classe com rotinas de login, criar seção cookie, e etc.. verificar logado, fazer logout
/// </summary>
public class Login
{
    Banco bd = new Banco();
    private string log, sen, session, selectlog, selectsen;
    
    public Login(string usuario, string senha)
    {
        //usado quando o usuário for digitar as credenciais
        //log = usuario.Trim();
        //sen = EncriptarSenha(senha);
        //session = EncriptarNomeSession();

        //    //administrador
        //    selectlog = "SELECT nm_usuario FROM usuarios";
        //    selectsen = "SELECT senha_usuario FROM usuarios";
    }
    //public bool CriaLogon(bool permanente, string email)
    //{
    //    //Toda a parte de criar logon e colocar no bd, ativar session ou cookie
    //    //O e-mail ja deve estar validado
    //    //O usuário não pode existir no banco
    //    if (bd.Comando("INSERT INTO loing (login, senha)VALUES ('" + log + "','" + sen + "')"))
    //    {
    //        if (permanente)
    //            CriarCookie();
    //        else
    //            CriarSession();
    //        return true;
    //    }
    //    else
    //    {
    //        //ocorreu algo com o banco de dados
    //        return false;
    //    }
    //}
    //public string EncriptarSenha()
    //{
    //    // Encripta a senha de maneira que não possa ser desincriptada
    //    MD5 md5Hasher = MD5.Create();
    //    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(sen));
    //    StringBuilder senha = new StringBuilder();
    //    for (int i = 0; i < data.Length; i++)
    //    {
    //        senha.Append(data[i].ToString("x2"));
    //    }
    //    return senha.ToString();
    //}
    //public string EncriptarSenha(string sen2)
    //{
    //    // Encripta a senha de maneira que não possa ser desincriptada
    //    MD5 md5Hasher = MD5.Create();
    //    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(sen2));
    //    StringBuilder senha = new StringBuilder();
    //    for (int i = 0; i < data.Length; i++)
    //    {
    //        senha.Append(data[i].ToString("x2"));
    //    }
    //    return senha.ToString();
    //}
    //public bool VerificarLogin()
    //{
    //    //verifica se o usuário existe no banco

    //    if (bd.VerificaExiste(selectlog, log))
    //    {
    //        //existe o usuário
    //        //agora verifica a senha
    //        return bd.VerificaExiste(selectsen, sen);
    //    }
    //    else
    //    {
    //        //usuário não existe
    //        return false;
    //    }
    //}
    //public bool VerificarLogin(string LoginSenha)
    //{
    //    //verifica se o usuário existe no banco é passado o longin ; senha

    //    string[] logsen = LoginSenha.Split('-');

    //    log = logsen[0];
    //    sen = logsen[1];

    //    if (bd.VerificaExiste(selectlog, logsen[0]))
    //    {
    //        //existe o usuário
    //        //agora verifica a senha
    //        if (bd.VerificaExiste(selectsen, logsen[1]))
    //        {
    //            //tudo ok
    //            return true;
    //        }
    //        else
    //        {
    //            //login existe mas a senha esta errada
    //            return false;
    //        }
    //    }
    //    else
    //    {
    //        //usuário não existe
    //        return false;
    //    }
    //}
    
    //public bool VerificaLogon()
    //{
    //    //testa se tem alguma sessão com o login
    //    if (HttpContext.Current.Session[session] != null)
    //    {
    //        //se existe a tal sessão verifica se o usuário logado nela existe no banco
    //        if (VerificarLogin(HttpContext.Current.Session[session].ToString()))
    //        {
    //            return true;
    //            //se existir ok ta logado
    //        }
    //        else
    //        {
    //            HttpContext.Current.Session.Remove(session);
    //            return false;
    //            //se não apaga a session
    //        }
    //    }
    //    else
    //    {
    //        HttpCookie cookie = HttpContext.Current.Request.Cookies[session];
    //        //caso não exista uma session verifica se não existe um cookie
    //        if (cookie != null)
    //        {
    //            //se existe tal cookie verifica com o banco as informações de usuario e senha
    //            if (VerificarLogin(cookie.Value.ToString()))
    //            {
    //                return true;
    //                // se existir tudo ok, ta logado    
    //            }
    //            else
    //            {
    //                HttpContext.Current.Request.Cookies.Remove(session);
    //                return false;// se não remove o cookie

    //            }
    //        }
    //        else
    //        {
    //            // não existe nem session nem cookie
    //            return false;
    //        }
    //    }
    //}
    //public void DefinirUsuario(string usuario, string senha)
    //{
    //    log = usuario.Trim();
    //    sen = senha.Trim();
    //    sen = EncriptarSenha();
    //    session = EncriptarNomeSession();
    //}
    //public string EncriptarNomeSession()
    //{
    //    MD5 md5Hasher = MD5.Create();
    //    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes("login"));
    //    StringBuilder ss = new StringBuilder();
    //    for (int i = 0; i < data.Length; i++)
    //    {
    //        ss.Append(data[i].ToString("x2"));
    //    }
    //    return ss.ToString();
    //}
    //public bool VerificarUsuário(string usr)
    //{
    //    return bd.VerificaExiste(selectlog, usr);
    //}
    //public bool LogarUsuario(bool permanecer)
    //{
    //    if (VerificarLogin())
    //    {
    //        if (permanecer)
    //            CriarCookie();
    //        else
    //            CriarSession();
    //        return true;
    //    }
    //    else
    //        return false;

    //}
    //public bool RecuperarSenha(string email)
    //{
    //    Email em = new Email();
    //    string[] nome = email.Split('@');
    //    string msg = "Para Que você possa criar uma nova senha acesse o endereço <a href=\"centralinformatica.cc\recuperarsenha\\\">Recuperar Senha</a> <br>"+
    //        "e insira o seguinte código "+EncriptarSenha(nome[0])+"";
    //    return em.EnviarEmail("Recuperar Senha",msg,"Recuperador de Senhas","recuperarsenha@centralinformatica.cc","TcheMasQueSenha",email,nome[0],"smtp.centralinformatica.cc",587);
    //}
    //public string RecuperarNomeUsuario()
    //{
    //    return log;
    //}
}